/*多态调用成员的特点 */

package polymorphismdemo2;

public class Test {
    public static void main(String[] args) {
        // 创建对象（多态形式）
        // Fu f=new Zi();
        animal a = new dog();

        // 调用成员变量：编译看左边，运行也看左边
        // 编译看左边：javac编译代码时，会看左边的父类中有无这个变量，如果有编译成功，否则编译失败
        // 运行看左边：java运行代码的时候，实际获取的就是父类中成员变量的值
        System.out.println(a.name);

        // 调用成员方法：编译看左边，但运行看右边
        // 编译看左边：javac编译代码时，会看左边的父类中有无这个方法，如果有编译成功，否则编译失败
        // 运行看右边：java运行代码时，实际运行的是子类中的方法
        a.show();
    }
}

class animal {
    String name = "动物";

    public void show() {
        System.out.println("animal-----show方法");
    }
}

class dog extends animal {
    String name = "狗 ";

    @Override
    public void show() {
        System.out.println("dog-------show方法");
    }
}

class cat extends animal {
    String name = "猫";

    @Override
    public void show() {
        System.out.println("cat------show方法");
    }
}